package com.qidian.buy.util.pojo;

import com.qidian.buy.util.JSONTools;
import com.qidian.buy.util.QdConstant;

/**
 * @author 戴着假发的程序员
 * @company 起点编程
 * @date 2023/7/19 13:42
 * 请求之后响应给客户端的同意的项目对象类型
 */
public class QdResult {
    /**
     * 状态码
     */
    private int code;
    /**
     * 响应的消息
     */
    private String msg;
    /**
     * 响应的数据
     */
    private Object data;

    public String getDataJson(){
        // 将data转换为json返回
        if(this.data != null)
            return JSONTools.object2json(this.data);
        else
            return null;
    }

    public QdResult() {
    }

    public QdResult(int code, String msg, Object data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }
    // 为了使用方便，我们可以添加一个静态的获取当前类对象的方法

    /**
     * 根据参数result返回对应的qdResult对象
     * @param result
     * @return
     */
    public static QdResult isOk(int result){
        return  result == 1 ?   QdResult.ok() : QdResult.fail();
    }

    public static QdResult ok(){
        QdResult result = new QdResult(QdConstant.RESULT_CODE_OK,null,null);
        return  result;
    }
    public static QdResult ok(String msg){
        QdResult result = new QdResult(QdConstant.RESULT_CODE_OK,msg,null);
        return  result;
    }
    public static QdResult ok(Object obj){
        QdResult result = new QdResult(QdConstant.RESULT_CODE_OK,null,obj);
        return  result;
    }
    public static QdResult ok(String msg,Object data){
        QdResult result = new QdResult(QdConstant.RESULT_CODE_OK,msg,data);
        return  result;
    }
    public static QdResult fail(){
        QdResult result = new QdResult(QdConstant.RESULT_CODE_FAIL,null,null);
        return  result;
    }
    public static QdResult fail(String msg){
        QdResult result = new QdResult(QdConstant.RESULT_CODE_FAIL,msg,null);
        return  result;
    }
    public static QdResult fail(String msg,Object data){
        QdResult result = new QdResult(QdConstant.RESULT_CODE_FAIL,msg,data);
        return  result;
    }
    public static QdResult duplicate(){
        QdResult result = new QdResult(QdConstant.RESULT_CODE_DUPLICATE,null,null);
        return  result;
    }
    public static QdResult duplicate(String msg){
        QdResult result = new QdResult(QdConstant.RESULT_CODE_DUPLICATE,msg,null);
        return  result;
    }
    public static QdResult duplicate(String msg,Object data){
        QdResult result = new QdResult(QdConstant.RESULT_CODE_DUPLICATE,msg,data);
        return  result;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}
